<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    console.log(
        '%c %c\n%c测试%cMr.James', `
  `, `
  `, `
  color: #f3f3f4;
  padding: 4px 3px 4px 11px;
  background-color: #FF3D45;
  border-radius: 5px 0 0 5px;
  `, `
  color: #5A94C1;
  padding: 4px 11px 4px 3px;
  background-color: #bfd3de;
  border-radius: 0 5px 5px 0;
`)

    // 一、作用域定义：就是一个变量可以使用的范围 分别有：全局作用域 局部作用域 （ES6新增）块级作用域 只适用于let const

    // test是函数，每个函数作用域也首先要进行预解析，
    // var，function声明的变量或者函数首先变量提升，
    // 但是函数的优先级高于变量，
    // 所以预解析池最终结果为function x(){ }
    var x = 30;
    function test() {
        console.log(x);//向上查找 找到预解池function x (){}
        var x = 10;
        console.log(x);//向上查找 找到10
        x = 20;
        function x() {

        };
        console.log(x);//向上查找找到20
    }
    test();
    // var 有变量提升 没有块级作用域 没有暂存性死区 可以重复声明变量
    // let const 没有变量提升 有块级作用域 有暂存性死区 在同一作用域中不可重复声明变量
    // var let 可以修改声明的变量，const声明是一个常量一旦赋值便不可修改，

</script>